package com.ktgj.flight.domain.InterfaceEntity;

import com.fasterxml.jackson.annotation.JsonFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 乘客信息
 */
public class MoPassenger implements Serializable {
    public MoPassenger()
    {
        ListProductPolicy = new ArrayList<MoProductPolicy>();
        ListTicketNoInfo = new ArrayList<TicketNoInfo>();
        ListAllowRefundTypeInfo = new ArrayList<MoAllowRefundTypeInfo>();
    }

    /**
     * 票面价
     */
    public BigDecimal TicketAmount;

    /**
     * 中转第二程或返程票面价
     */
    public BigDecimal backTicketAmount;

    /**
     * 原始票面价
     */
    public BigDecimal orgPrice;

    /**
     * 中转第二程或返程原始票面价
     */
    public BigDecimal backOrgPrice;

    /**
     * 代理服务费
     */
    public BigDecimal AgencyFee;

    /**
     * 基建
     */
    public BigDecimal AirportTax;

    /**
     * 燃油
     */
    public BigDecimal FuelTax;

    /**
     * 乘客姓名
     */
    public String PassengerName;

    /** 英文姓 */
    public String englishSurname;

    /** 英文名 */
    public String englishName;

    /**
     * 持有人国籍
     */
    public String nationality;

    /**
     * 是否为证件持有者
     */
    public boolean docHolderInd;

    /**
     * 发证国家
     */
    public String docIssueCountry;

    /**
     * false：女true：男
     */
    public boolean Sex;

    /**
     * 乘客手机号
     */
    public String PassengerMobile;

    /**
     * 乘客证件类型 与CRM枚举保持一致（身份证 = 1, 护照 = 4, 其他证件 = 99, 无证件 = 0, 军人证 = 2, 回乡证 = 5, 其他证 = 6, 台胞证 = 7, 驾驶证 = 8, 港澳通行证 = 9, 户口本 = 10, 出生证明 = 11 ）
     */
    public int IDType;

    /**
     * 乘客证件号
     */
    public String IDNO;

    /**
     * 有效日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    public Date IDValidDate;

    /**
     * 乘客生日
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    public Date Birthday;

    /**
     * 乘客类型(成人>12岁=1,儿童2-12岁=2,婴儿2岁=3）
     */
    public int PassengerType;

    /**
     * pnr
     */
    public String PNR;

    /**
     * 票号
     */
    public String TicketNo;

    /**
     * 票号
     */
    public List<TicketNoInfo> ListTicketNoInfo;

    /**
     * 出票时间
     */
    public String OutTicketTime;

    /**
     * 行程
     */
    public int LegID;

    /**
     * 乘机人此时的票状态 EnumHelper.OrderStatus
     */
    public int Status;

    /**
     * 此乘机人是否可申请退票
     */
    public Boolean Refundable;

    /**
     * 不可申请的原因
     */
    public String UnRefunableReason;

    /**
     * 单个人的退票费用
     */
    public BigDecimal RefundFee;

    /**
     * 单个人的退票费率
     */
    public BigDecimal RefundRate;

    /**
     * 是否退票，废票
     */
    public Boolean IsRefund;

    /**
     * 是否自动计算退票费成功
     */
    public Boolean RefundFeeAvailable;

    /**
     * 退票类型
     */
    public int RefundType;

    /**
     * 是否可以改签
     */
    public Boolean Rebookable;

    /**
     * 不可改签的原因
     */
    public String UnrebookableReason;

    /**
     * 连续客票号码
     */
    public String Conjunction;

    /**
     * 乘机人编号
     */
    public String PsgID;

    /**
     * 乘客选中产品信息列表
     */
    public List<MoProductPolicy> ListProductPolicy;

    public List<MoAllowRefundTypeInfo> ListAllowRefundTypeInfo;

    /**
     * true 儿童跟随成人，false儿童不跟随成人 瑞丽专用
     */
    public Boolean follow;

    /**
     * 乘客年龄
     */
    public long age;

    /**
     * 证件号
     * */
    public String licenseNum;

    /**
     * 返现金额
     */
    public BigDecimal returnMoney;

    public int getPassengerType() {
        return PassengerType;
    }

    public void setPassengerType(int passengerType) {
        PassengerType = passengerType;
    }
}
